/**
 * @description: 用户接口
 * @author: siwukun
 * @date: 2022/05/30
 */
package com.itheima.stock.service;

import com.github.pagehelper.PageInfo;
import com.itheima.stock.common.domian.UpdateUserAndRoleInfoDomain;
import com.itheima.stock.common.domian.UserAddDomain;
import com.itheima.stock.common.domian.UserAndRoles;
import com.itheima.stock.common.domian.UserPageDomain;
import com.itheima.stock.pojo.SysUser;
import com.itheima.stock.vo.req.LoginReqVo;
import com.itheima.stock.vo.resp.LoginRespVo;
import com.itheima.stock.vo.resp.PageResult;
import com.itheima.stock.vo.result.R;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.List;
import java.util.Map;

/**
 * 用户接口
 */

public interface UserService {

    /**
     * 登录
     *
     * @param vo 请求数据
     * @return LoginRespVo
     */
    R<LoginRespVo> login(LoginReqVo vo);

    /**
     * 生成验证码
     *
     * @return data
     */
    R<Map> generateCaptcha();

    /**
     * 多条件综合查询用户分页信息，条件包含：分页信息 用户创建日期范围
     *
     * @param userPageDomain 模糊查询分页实体类
     * @return
     */
    R<PageResult<PageInfo>> queryPageUserinfo(UserPageDomain userPageDomain);

    R<String> addUserData(SysUser sysUser);

    /**
     * 获取用户具有的角色信息，以及所有角色信息
     * @param userId
     * @return
     */
    R<UserAndRoles> queryAllUserRoles(String userId);

    /**
     * 更新用户角色信息
     * @return
     */
    R<String> updateAllUsers(UpdateUserAndRoleInfoDomain updateUserAndRoleInfoDomain);

    R<String> deleteALLUserInfo(List<Long> userIds);

    R<SysUser> getUserById(Long id);

    R<String> updateUserById(UserAddDomain userAddDomain);

    boolean updateUserInfo(UserAddDomain userAddDomain);
}
